package org.snail.dept.mapper;

import com.dingtalk.open.client.api.model.corp.Department;
import org.apache.ibatis.annotations.Param;
import org.snail.dept.bean.DepartDO;
import org.snail.dept.bean.DeptUserDO;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Repository
public interface DepartmentMapper {

 //***************************部门信息表相关操作*********************************
 /**
  * 保存部门基本信息
  * @param departDO 钉钉部门消息
  */
 void saveDeptBasicInfo(DepartDO departDO);

 /**
  * 修改dept信息
  * @param dept 修改部门的信息
  */
 void updateDept(DepartDO dept);

 /**
  * 根据部门名称查找部门详细
  * @param operationDepartmentName 部门名称
  * @return 部门列表
  */
 List<DepartDO> findDeptInfoByName(@Param("name") String operationDepartmentName);

 /**
  * 根据部门ID查找部门详细
  * @param departmentId 部门ID
  * @return 部门列表
  */
 DepartDO findDeptByDepartmentId(@Param("departmentId") Long departmentId);

 /**
  * 根据部门ID查找子部门详细
  * @param id 部门ID
  * @return 部门列表
  */
 List<DepartDO> findDeptByParentId(@Param("id")Long id);

//*****************************************以下是部门人员表相关的操作***************************************
 /**
  * 保存部门人员至部门人员的关联表中-----department_userList
  * @param deptId 部门id
  * @param userList 钉钉接口人员对象
  */
 void saveDeptUserList(@Param("deptId") Long deptId, @Param("userList") List userList);

 /**
  * 删除部门下人员userids-----department_userList
  * @param delUseridList
  */
 void deletDeptUserList(@Param("id") Long id, @Param("userids") List delUseridList, @Param("updateTime") Date updateTime);

 /**
  * 查询部门下userId-----department_userList
  * @return List<String> 里面包含的是userid List  这样是方面与钉钉id进行比较
  */
 List<String> findUserIdListByDeptId(@Param("deptId") Long deptId);

 /**
  * 根据userid查询部门
  * @param userid 员工userid
  * @return 部门id
     */
 int findDeptIdByUserId(@Param("userid") String userid);

 /**
  * 根据员工id查询所属的部门-----department_userList
  * @param
  * @return
  */
 List<Map<String,Object>> findDeptByEmployeeId();

 /**
  * 查询部门下人员是否已经移除公司架构
  * @return
  */
 List<String> checkUserIdInDepartmentUserList(@Param("userid") String userid);
}